// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

#include "fastflow/core/macros.h"
#include "fastflow/framework/onnx_object.h"

#ifdef __cplusplus
extern "C" {
#endif
DEFINE_RUNTIME_CLASS(FASTFLOWProvider);
//Inherented from ONNXObject
typedef struct FASTFLOWProviderFactoryInterface {
  ONNXObject parent;
  ONNXStatusPtr(FASTFLOW_API_STATUSCALL* CreateProvider)(void* this_, FASTFLOWProviderPtr* out);
} FASTFLOWProviderFactoryInterface;

typedef FASTFLOWProviderFactoryInterface* FASTFLOWProviderFactoryPtr;


// /**
//  * \param use_arena zero: false. non-zero: true.
//  * \param out Call FASTFLOWReleaseObject() method when you no longer need to use it.
//  */
// FASTFLOW_API_STATUS(FASTFLOWCreateCpuExecutionProviderFactory, int use_arena, _Out_ FASTFLOWProviderFactoryPtr** out)
// FASTFLOW_ALL_ARGS_NONNULL;

// FASTFLOW_API_STATUS(FASTFLOWCreateCpuAllocatorInfo, enum FASTFLOWAllocatorType type, enum FASTFLOWMemType mem_type1, _Out_ FASTFLOWAllocatorInfo** out)
// FASTFLOW_ALL_ARGS_NONNULL;

#ifdef __cplusplus
}
#endif
